package GestionDatosFM;

import java.util.Date;

import ExcepcionesFM.ExcepcionConsultaSinResultados;
import LogicaFM.EquipoPrimera;
import LogicaFM.Fecha;
import LogicaFM.Partido;

public class FechaDAO {

	public static Fecha getFechaActual() {
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT f.nro_fecha, f.estado_fecha, f.inicio_veda, f.fin_veda, p.estado, p.goles_local, p.goles_visitante, el.nombre, ev.nombre,el.id_equipo_primera,ev.id_equipo_primera "
												+ "FROM fecha f, partido p, equipo_primera el, equipo_primera ev "
												+ "WHERE f.estado_fecha = true "
												+ "AND f.nro_fecha = p.nro_fecha "
												+ "AND p.id_equipo_local = el.id_equipo_primera "
												+ "AND p.id_equipo_visitante = ev.id_equipo_primera ");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// Levantar La Fecha junto con sus partidos, y a los partidos junto con los dos equipos q participan
		// pero los partidos levantarlos sin los jugadores, eso se levanta despues para no tener q levantar toda la BD al pedo...
		
		Partido[] partidos = new Partido[tmp.length];
		for (int i=0; i<tmp.length;i++){
			EquipoPrimera local = new EquipoPrimera((int)tmp[i][9],(String)tmp[i][7]);
			EquipoPrimera visitante = new EquipoPrimera((int)tmp[i][10],(String)tmp[i][8]);
			partidos[i] = new Partido(local,visitante,(int)tmp[i][5],(int)tmp[i][6],(boolean)tmp[i][4]);
		}
		Fecha r = new Fecha((int)tmp[0][0],(Date)tmp[0][2],(Date)tmp[0][3],(boolean)tmp[0][1],partidos);
		
		return r;
	}

	public static Fecha selectFecha(int nroFecha) {
		// TODO Auto-generated method stub
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT  f.*,el.id_equipo_primera,el.nombre,ev.id_equipo_primera,ev.nombre "
													+ "FROM fecha f, partido p, equipo_primera el, equipo_primera ev "
													+ "WHERE f.nro_fecha = "+nroFecha
													+ " AND p.nro_fecha = f.nro_fecha"
													+ " AND p.id_equipo_local = el.id_equipo_primera"
													+ " AND p.id_equipo_visitante = ev.id_equipo_primera");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Partido[] p = new Partido[tmp.length];
		for(int i=0;i<tmp.length;i++){
			p[i]=new Partido(new EquipoPrimera((int)tmp[i][4],(String)tmp[i][5]),new EquipoPrimera((int)tmp[i][6],(String)tmp[i][7]));
		}
		
		Fecha r = new Fecha((int)tmp[0][0],(Date)tmp[0][2],(Date)tmp[0][3],(boolean)tmp[0][1],p);
		
		return r;
	}

	public static void cerrarFecha(Fecha fechaActual) {
		EjecutableBD.ejecutarUpdate("UPDATE fecha SET estado_fecha = false WHERE nro_fecha = "+fechaActual.getNumeroFecha());
		EjecutableBD.ejecutarUpdate("UPDATE fecha SET estado_Fecha = true WHERE nro_Fecha = "+(fechaActual.getNumeroFecha()+1));
		
	}

}
